package com.itc.bi.service;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import com.itc.bi.dto.DirectoryDto;
import com.itc.bi.dto.ReNameDirectDto;
import com.itc.bi.entity.DirectoryEntity;
import com.itc.bi.vo.Direcr.DircetDataInfoVO;
import com.itc.bi.vo.Direcr.DirectTreeVO;
import com.itc.bi.vo.Direcr.PreviewDatVO;
import com.itc.bi.vo.excelVo.HeardVO;

import java.util.List;

/**
* @author hecai
* @description 针对表【tb_directory(数据目录表)】的数据库操作Service
* @createDate 2024-06-14 15:56:56
*/
public interface DirectoryService extends IService<DirectoryEntity> {

    /**
     *
     * @param dtId
     */
    Boolean runOneDataSet(Long dtId);

    /**
     * 获取cron
     * @param dtId
     * @return
     */
    String getCronByDtId(Long dtId);

    /**
     * 更新cron
     * @param dtId
     * @param cron
     * @return
     */
    Boolean updateCron(Long dtId,String cron);

    /**
     * 新增目录
     * @param dto
     * @return
     */
    JSONObject saveDirectory(DirectoryDto dto);

    /**
     * 重命名目录
     * @param dto
     * @return
     */
    Boolean reNameDirectory(ReNameDirectDto dto);

    /**
     * 移除目录或数据集
     * @param dtId
     * @return
     */
    Boolean reMoveDirectory(Long dtId);

    /**
     * 数据集移动目录
     * @param dtId
     * @param pid
     * @return
     */
    Boolean mvDirectory(Long dtId, Long pid);

    /**
     * 复制数据集
     * @param dtId
     * @return
     */
    Long copyDataSet(Long dtId);

    /**
     * 数据预览
     * @param dtId
     * @param pageIndex
     * @param pageSize
     * @return
     */
    PreviewDatVO dataPreviewByDtId(Long dtId, Integer pageIndex, Integer pageSize);

    /**
     * 根据数据集id获取表头
     * @param dtId
     * @return
     */
    List<HeardVO> getHeardList(Long dtId);

    /**
     * 获取目录树
     * @param name
     * @return
     */
    List<DirectTreeVO> getDirectDataSetTree(String name);

    /**
     * 获取目录树
     * @return
     */
    List<DirectTreeVO> getDirectTree();

    /**
     * 获取数据集详情
     * @param dtId
     * @return
     */
    DircetDataInfoVO getDircetDataInfo(Long dtId);

    /**
     * 判断字段类型是否是转换
     * @param id
     * @param targetType
     * @return
     */
    Boolean isTransitionColumType(Long id,String targetType);
}
